package main

import "fmt"

/*
实现构造函数效果。Go语言的结构体没有构造函数，我们可以自己实现
*/
func main() {

	p := newPerson("steven", "上海", 26)
	fmt.Printf("%#v，\n%p", p, p)
}

/*
实现构造函数效果

TIPS：struct是值类型，如果结构体比较复杂的话，值拷贝性能开销会比较大，所以该构造函数返回的是结构体指针类型
*/
func newPerson(name, city string, age int8) *person {

	return &person{
		name: name,
		city: city,
		age:  age,
	}
}

type person struct {
	name string
	city string
	age  int8
}
